package com.wink_172.library.utils

import android.text.TextUtils
import com.alibaba.fastjson.JSON
import com.wink_172.library.utils.MMKVTool.getString
import com.wink_172.library.utils.MMKVTool.setString
import org.xutils.x
import java.util.*

/**
 * 保存字符串列表
 * 可用于搜索记录  保存密码  保存最近登录信息
 */
object StringListUtil {
    /**
     * params:  Constants.SEARCH_HISTORY
     * 保存单个字符串  列表最多保存100个
     */
    @JvmStatic
    fun saveSingleString(input: String?, key: String?) {
        if (TextUtils.isEmpty(input)) {
            return
        }
        val all_str = getString(x.app(), key, "")
        var history = JSON.parseArray(all_str, String::class.java)
        if (history == null) {
            history = ArrayList()
            history.add(input)
        } else {
            history.add(input)
            if (history.size > 100) {
                history.removeAt(99)
            }
        }
        setString(x.app(), key, JSON.toJSONString(history))
    }


    /**
     * params:  Constants.SEARCH_HISTORY
     * 移除单个字符串 请保持字符串一定吻合
     * 如果因为JSON增加或者移除了字段 那就会导致操作失败 所以要谨慎使用该方法 ，建议在外部新建一个方法用id来判断
     */
    fun removeSingleString(input: String?, key: String?){
        if (TextUtils.isEmpty(input)) {
            return
        }

        val all_str = getString(x.app(), key, "")
        if(TextUtils.isEmpty(all_str)){
            return
        }

        var history = JSON.parseArray(all_str, String::class.java)

        if(history.contains(input)){
            history.remove(input)
            setString(x.app(), key, JSON.toJSONString(history))
        }
    }

    /**
     * 查询字符串列表
     */
    @JvmStatic
    fun queryStringList(key: String?): List<String>? {
        val all_str = getString(x.app(), key, "")
        if(TextUtils.isEmpty(all_str)){
            return null;
        }
        return JSON.parseArray(all_str, String::class.java)
    }


    /**
     * 清除字符串列表
     */
    @JvmStatic
    fun cleanStringList(key: String?) {
        setString(x.app(), key, "")
    }
}